/*
 * ESTA CLASE LA HAGO PARA DEFINIR RECURSOS OSEA QUE PUEDA SALIME DE LA APLICACION
 * Y LE DOY ATRAS AL NAVEGADOR YA NO SE RECUPERA LA SESION SE CIERRA
 * DE LO CONTRARIO SI LE DOY ADELANTE YA NO PODRIA ACCESAR AL SISTEMA
 */

package util;

import javax.faces.application.NavigationHandler;
import javax.faces.context.FacesContext;
import javax.faces.event.PhaseEvent;
import javax.faces.event.PhaseId;
import javax.faces.event.PhaseListener;
import javax.servlet.http.HttpSession;

/**
 *
 * @author Manuel
 */
public class RecursosListener implements PhaseListener{

    @Override
    public void afterPhase(PhaseEvent event) {
        FacesContext facesContext = event.getFacesContext();
        /*Con esto capturo el nombre de la pagina actual */
        String currentPage = facesContext.getViewRoot().getViewId();
        /* si es la pagina de login va ha ser true de lo contrario false */
        boolean isLoginPage = (currentPage.lastIndexOf("index.xhtml") > -1 ) ? true : false;
        HttpSession sesion = (HttpSession) facesContext.getExternalContext().getSession(true);
        /* recupero un string que he guardado osea el nombre de usuario que se en cuentra en loginBean linea 59 en el metodo put esta en comillas*/
        Object usuario = sesion.getAttribute("usuario");
        
        if (!isLoginPage && usuario == null)
            {
                NavigationHandler nh = facesContext.getApplication().getNavigationHandler();
                nh.handleNavigation(facesContext, null, "/index.xhtml");
            } 
           
 
    }

    @Override
    public void beforePhase(PhaseEvent event) {
    }

    @Override
    public PhaseId getPhaseId() {
        return PhaseId.RESTORE_VIEW;
    }
    
}
